home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / dev / misc / gms_e.lha / GMSDev / Source / E / Screens / ScrollScreen.e < prev   
Text File  |  1997-09-15  |  2KB  |  73 lines

  1. /*
  2. ** Scroll Screen 336
  3. ** -----------------
  4. ** This demo allows you to legally scroll up to 50 screens in either
  5. ** direction by setting the HBUFFER flag.  Normally we would blit blocks down
  6. ** the left and right hand side to give an impression of heaps of screens -
  7. ** see the MapEditor for this.
  8. ** 
  9. */
  10.  
  11. MODULE 'dpkernel','gms/dpkernel','graphics/pictures','files/files'
  12. MODULE 'screens','system/register','system/modules','graphics/screens'
  13. MODULE 'gms/joydata'
  14.  
  15. PROC main()
  16.    DEF screen=NIL:PTR TO screen, joy=NIL:PTR TO joydata
  17.    DEF pic=NIL:PTR TO picture, picfile:filename, scrmodule=NIL:PTR TO module
  18.  
  19.    picfile := [ ID_FILENAME, 'GMS:demos/data/PIC.Green']:filename
  20.  
  21.    IF dpkbase := OpenLibrary('GMS:libs/dpkernel.library',0)
  22.       SetUserPrefs(0)
  23.  
  24.     IF (scrmodule := Init([TAGS_MODULE,NIL,
  25.         MODA_NUMBER,    MOD_SCREENS,
  26.         MODA_TABLETYPE, JMP_AMIGAE,
  27.         TAGEND], NIL))
  28.  
  29.      scrbase := scrmodule.modbase
  30.  
  31.       IF (screen := Init([TAGS_SCREEN,NIL,
  32.            GSA_SCRWIDTH,  320,
  33.            GSA_SCRHEIGHT, 256,
  34.            GSA_PICWIDTH,  336,
  35.            GSA_PICHEIGHT, 256,
  36.            GSA_PLANES,    5,
  37.            GSA_SCRATTRIB, HSCROLL OR SBUFFER,
  38.            TAGEND],NIL))
  39.  
  40.          IF (pic := Init([TAGS_PICTURE,0,
  41.               PCA_DATA,       screen.memptr1,
  42.               PCA_WIDTH,      336,
  43.               PCA_HEIGHT,     256,
  44.               PCA_PLANES,     5,
  45.               PCA_AMTCOLOURS, 32,
  46.               PCA_SCRMODE,    screen.scrmode,
  47.               PCA_SCRTYPE,    screen.scrtype,
  48.               PCA_FILE,       picfile,
  49.               TAGEND],NIL))
  50.  
  51.             screen.palette := pic.palette
  52.             UpdatePalette(screen)
  53.  
  54.             IF (joy := Init(Get(ID_JOYDATA),NIL))
  55.                Display(screen)
  56.                REPEAT
  57.                  Query(joy)
  58.                  screen.picxoffset := screen.picxoffset + joy.xchange
  59.                  MovePicture(screen)
  60.                  WaitVBL()
  61.               UNTIL !(joy.buttons AND JD_LMB)
  62.             ENDIF
  63.          ENDIF
  64.       ENDIF
  65.     ENDIF
  66.    Free(joy)
  67.    Free(pic)
  68.    Free(screen)
  69.    Free(scrmodule)
  70.    CloseDPK()
  71.    ENDIF
  72. ENDPROC
  73.